kvasprintf
API Overview
kvasprintf is an API in Linux kernel. This rule belongs to the api pair type. This rule is generated using APISpecGen.
Rule Description
tip
The resource acquired by kvasprintf must be properly released using kfree
info
- Tags: api pair
- Parameter Index: N/A
- CWE Type: CWE-404
Rule Code
import cpp
import semmle.code.cpp.dataflow.new.DataFlow
DataFlow::Node getSource(FunctionCall fc){
fc.getTarget().hasName("kvasprintf")
and result.asExpr() = fc
}
DataFlow::Node getSink(FunctionCall fc){
fc.getTarget().hasName("kfree")
and result.asExpr() = fc.getArgument(0)
}
FunctionCall freeTarget(FunctionCall malloc){
DataFlow::localFlow(getSource(malloc), getSink(result))
}
from FunctionCall fc
where fc.getTarget().hasName("kvasprintf")
and not exists(
FunctionCall free|
free = freeTarget(fc)
)
select fc.getLocation()